CREATE OR REPLACE PACKAGE BODY EDIV2.Pack_?Categoria_Capt_TrasiegoCombustible AS
/******************************************************************************
   NAME:       Pack_?Categoria_Capt_TrasiegoCombustible
   PURPOSE:

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        18/12/2012   Luis Antonio Lara Capetillo       Creacion del Paquete
******************************************************************************/

PROCEDURE  TrasiegoCombustibleInsertarModificar(pnidDocumento NUMBER, pnidViaje NUMBER, 
						pnombreBuque VARCHAR2, pEmpProveedor VARCHAR2, pbuqueAbastecedor VARCHAR2, 
						pnidtipoCombustible NUMBER, pcantidad NUMBER, pmuelle VARCHAR2, 
						pfInicio VARCHAR2, pfFin VARCHAR2, punidadMedida VARCHAR2, 
						pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   Capt_TrasiegoCombustible
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO Capt_TrasiegoCombustible
	           (nid, nidDocumento, nidViaje, 
						nombreBuque, EmpProveedor, buqueAbastecedor, 
						nidtipoCombustible, cantidad, muelle, 
						fInicio, fFin, unidadMedida, 
						)
    VALUES     (seq_Capt_TrasiegoCombustible.nextval, pnidDocumento, pnidViaje, 
						pnombreBuque, pEmpProveedor, pbuqueAbastecedor, 
						pnidtipoCombustible, pcantidad, pmuelle, 
						to_date(pfInicio,'DD/MM/YYYY HH24:MI:SS'), to_date(pfFin,'DD/MM/YYYY HH24:MI:SS'), punidadMedida, 
						);
  ELSE
    UPDATE Capt_TrasiegoCombustible
    SET    nidDocumento=pnidDocumento, nidViaje=pnidViaje, 
		nombreBuque=pnombreBuque, EmpProveedor=pEmpProveedor, buqueAbastecedor=pbuqueAbastecedor, 
		nidtipoCombustible=pnidtipoCombustible, cantidad=pcantidad, muelle=pmuelle, 
		fInicio=to_date(pfInicio,'DD/MM/YYYY HH24:MI:SS'), fFin=to_date(pfFin,'DD/MM/YYYY HH24:MI:SS'), unidadMedida=punidadMedida
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Capt_TrasiegoCombustible_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Capt_TrasiegoCombustible_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Capt_TrasiegoCombustibleConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidViaje, 
						nombreBuque, EmpProveedor, buqueAbastecedor, 
						nidtipoCombustible, cantidad, muelle, 
						fInicio, fFin, unidadMedida, 
						
    FROM   Capt_TrasiegoCombustible
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Capt_TrasiegoCombustibleDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pEncabezado OUT cursor_type,
                           pDatos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pEncabezado FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
           (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE  d.nid=pnidDocumento
    AND    d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidViaje, 
						nombreBuque, EmpProveedor, buqueAbastecedor, 
						nidtipoCombustible, cantidad, muelle, 
						fInicio, fFin, unidadMedida, 
						
    FROM   Capt_TrasiegoCombustible
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

END Pack_?Categoria_Capt_TrasiegoCombustible;
